home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
misc
/
pcduo102.zip
/
@PCDUO.ZIP
/
SETUP.MS_
/
SETUP.MS
Wrap
Text File
|
1994-09-20
|
14KB
|
394 lines
'**************************************************************************
'* MSSetup Install Script
'**************************************************************************
''$DEFINE DEBUG ''Define for script development/debugging
'$INCLUDE 'setupapi.inc'
'$INCLUDE 'msdetect.inc'
''Dialog ID's
CONST WELCOME = 100
CONST ASKQUIT = 200
CONST DESTPATH = 300
CONST EXITFAILURE = 400
CONST EXITQUIT = 600
CONST EXITSUCCESS = 700
CONST PROFILES = 800
CONST INTROHELP = 900
CONST DIRHELP = 1000
''CONST RECONFIG = 1100
CONST CORRUPTED = 1200
CONST NO_NAME = 1210
CONST SLAVE_OR_CTL = 1300
CONST WIN_OR_DOS = 1400
CONST NB_OR_IPX = 1500
CONST DEBUGMSG = 1600
CONST INIERROR = 1700
CONST BADPATH = 6400
CONST BADAUTO = 7900
CONST BADWINVERSION = 8000
CONST OVERWRITE = 8100
''Bitmap ID
CONST LOGO = 1
''Options$
CONST SLAVE = 1
CONST CONTROL = 2
CONST WINDOWS = 3
CONST DOS = 4
CONST NETBIOS = 5
CONST IPX = 6
CONST REMOTE = 7
CONST BRIDGE = 8
GLOBAL PRODUCT$ ''Product name
GLOBAL TLA$ ''Product abbreviation
GLOBAL DIR$ ''Install directory
GLOBAL DEST$ ''Default destination directory.
GLOBAL MNAME$ ''Machine name.
GLOBAL OPTIONS$ ''What to install
GLOBAL MSG$ ''See DEBUGMSG:
GLOBAL CUIDLL$ ''Custom user interface dll
GLOBAL HELPPROC$ ''Help dialog procedure
GLOBAL DLG% ''Dialog ID
GLOBAL COPY% ''Copy files?
DECLARE SUB Install
DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
DECLARE SUB FTerminateWinHelp LIB "setup.dll"
DECLARE FUNCTION FUpdateIniFiles LIB "setup.dll" (szPath$, szOptions$) AS INTEGER
DECLARE FUNCTION FGetString LIB "setup.dll" (resid$) AS INTEGER
'$ifndef DEBUG
DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
'$endif
INIT:
'$INCLUDE 'vendor.inc' '' Sets up PRODUCT$, TLA$, DIR$
SetSymbolValue "Product", PRODUCT$
SetSymbolValue "DIR", DIR$
SetSymbolValue "TLA", TLA$
CUIDLL$ = "setup.dll"
HELPPROC$ = "FHelpDlgProc"
SetBitmap CUIDLL$, LOGO
SetTitle PRODUCT$ + " Setup"
SetRestartDir GetWindowsDir
szInf$ = GetSymbolValue("STF_SRCINFPATH")
IF szInf$ = "" THEN
szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
END IF
ReadInfFile szInf$
'$INCLUDE 'defaults.inc' '' Sets up installation defaults
i% = SetSizeCheckMode(scmOff)
'$IFDEF DEBUG
'' i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
WinDrive$ = MID$(GetWindowsDir, 1, 1)
IF IsDriveValid(WinDrive$) = 0 THEN
i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
GOTO QUIT
END IF
'$ENDIF ''DEBUG
WELCOME:
sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", INTROHELP, HELPPROC$)
IF sz$ <> "CONTINUE" THEN
GOSUB ASKQUIT
GOTO WELCOME
END IF
UIPop 1
GETPATH:
SetSymbolValue "EditTextIn", DEST$
SetSymbolValue "EditFocus", "END"
GETPATHL1:
SetSymbolValue "EditText2", MNAME$
SetSymbolValue "OptionsIn", OPTIONS$
sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", DIRHELP, HELPPROC$)
DEST$ = GetSymbolValue("EditTextOut")
IF DEST$ <> GetSymbolValue("EditTextIn") THEN
COPY% = 1 '' Force copy if directory changed
END IF
MNAME$ = GetSymbolValue ("EditText2")
OPTIONS$ = GetSymbolValue ("OptionsOut")
SetSymbolValue "OptionsIn", ""
IF sz$ = "CONTINUE" THEN
IF (MNAME$ = "" OR INSTR (MNAME$, " ") <> 0) THEN
DLG% = NO_NAME
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF (MID$ (OPTIONS$, SLAVE, 1) = "0") AND (MID$ (OPTIONS$, CONTROL, 1) = "0" AND MID$ (OPTIONS$, REMOTE, 1) = "0") AND (MID$ (OPTIONS$, BRIDGE, 1) = "0") THEN
DLG% = SLAVE_OR_CTL
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF (MID$ (OPTIONS$, WINDOWS, 1) = "0") AND (MID$ (OPTIONS$, DOS, 1) = "0") THEN
DLG% = WIN_OR_DOS
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF (MID$ (OPTIONS$, NETBIOS, 1) = "0") AND (MID$ (OPTIONS$, IPX, 1) = "0") THEN
DLG% = NB_OR_IPX
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF FValidFATDir(DEST$) = 0 THEN
DLG% = BADPATH
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF COPY% <> 0 THEN
CreateDir DEST$, cmoNone ''must create network dir before using IsDirWritable
IF IsDirWritable(DEST$) = 0 THEN
DLG% = BADPATH
GOSUB ERRMSG
GOTO GETPATHL1
END IF
IF DoesFileExist(MAKEPATH(DEST$, "README.TXT"), femExists) THEN
sz$ = UIStartDlg(CUIDLL$, OVERWRITE, "FInfoDlgProc", 0, "")
UIPop 1
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
ELSEIF sz$ = "CANCEL" THEN
GOTO GETPATHL1
END IF
END IF
END IF
ELSEIF sz$ = "BACK" THEN
UIPop 1
GOTO WELCOME
ELSE
GOSUB ASKQUIT
GOTO GETPATH
END IF
UIPop 1
Install
QUIT:
ON ERROR GOTO ERRQUIT
IF ERR <> 0 THEN
IF ERR = STFQUIT THEN
sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
ELSE
sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfoDlgProc", 0, "")
END IF
END
END IF
IF TLA$ = "PCD" THEN
SetSymbolValue "EditTextIn", "cd " + DEST$
ELSE
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
SetSymbolValue "EditTextIn", MAKEPATH$ (DEST$, "SLAVE") + " " + MNAME$
ELSE
SetSymbolValue "EditTextIn", MAKEPATH$ (DEST$, "IPSLAVE") + " " + MNAME$
END IF
END IF
SetSymbolValue "EditFocus", "END"
sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FEditDlgProc", 0, "")
END
ERRQUIT:
sz$ = UIStartDlg(CUIDLL$, CORRUPTED, "FInfoDlgProc", 0, "")
END
ERRMSG:
sz$ = UIStartDlg(CUIDLL$, DLG%, "FInfoDlgProc", 0, "")
UIPop 1
RETURN
ASKQUIT:
sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
IF sz$ = "EXIT" THEN
UIPopAll
ERROR STFQUIT
END IF
UIPop 1
RETURN
DEBUGMSG:
MSG_SAVE$ = GetSymbolValue ("EditTextIn")
SetSymbolValue "EditTextIn", MSG$
MSG$ = UIStartDlg(CUIDLL$, DEBUGMSG, "FEditDlgProc", 0, "")
SetSymbolValue "EditTextIn", MSG_SAVE$
UIPop 1
RETURN
'**
'** Purpose:
'** Builds the copy list and performs all installation operations.
'** Arguments:
'** none.
'** Returns:
'** none.
'*************************************************************************
SUB Install STATIC
SrcDir$ = GetSymbolValue("STF_SRCDIR")
IF (COPY% <> 0) THEN
CreateDir DEST$, cmoNone
OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
WriteToLogFile ""
WriteToLogFile "User chose as destination directory: " + DEST$
WriteToLogFile ""
WriteToLogFile "May have had to create the directory: " + DEST$
WriteToLogFile ""
AddSectionFilesToCopyList "Files", SrcDir$, DEST$
IF (MID$ (OPTIONS$, SLAVE, 1) = "1") THEN
AddSectionFilesToCopyList "SLAVE", SrcDir$, DEST$
IF (MID$ (OPTIONS$, WINDOWS, 1) = "1") THEN
AddSectionFilesToCopyList "SLAVE_WIN", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
AddSectionFilesToCopyList "SLAVE_IPX", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
AddSectionFilesToCopyList "SLAVE_NB", SrcDir$, DEST$
END IF
END IF
IF (MID$ (OPTIONS$, CONTROL, 1) = "1") THEN
AddSectionFilesToCopyList "CTL", SrcDir$, DEST$
IF (MID$ (OPTIONS$, WINDOWS, 1) = "1") THEN
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
AddSectionFilesToCopyList "CTL_WIN_NB", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
AddSectionFilesToCopyList "CTL_WIN_IPX", SrcDir$, DEST$
END IF
END IF
IF (MID$ (OPTIONS$, DOS, 1) = "1") THEN
AddSectionFilesToCopyList "CTL_DOS", SrcDir$, DEST$
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
AddSectionFilesToCopyList "CTL_DOS_NB", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
AddSectionFilesToCopyList "CTL_DOS_IPX", SrcDir$, DEST$
END IF
END IF
END IF
IF (MID$ (OPTIONS$, WINDOWS, 1) = "1") THEN
AddSectionFilesToCopyList "WINDOWS", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, REMOTE, 1) = "1") THEN
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
AddSectionFilesToCopyList "REMOTE_IPX", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
AddSectionFilesToCopyList "REMOTE_NB", SrcDir$, DEST$
END IF
END IF
IF (MID$ (OPTIONS$, BRIDGE, 1) = "1") THEN
AddSectionFilesToCopyList "BRIDGE", SrcDir$, DEST$
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
AddSectionFilesToCopyList "BRIDGE_IPX", SrcDir$, DEST$
END IF
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
AddSectionFilesToCopyList "BRIDGE_NB", SrcDir$, DEST$
END IF
END IF
CopyFilesInCopyList
END IF
IF (MID$ (OPTIONS$, WINDOWS, 1) = "1") THEN
CreateProgmanGroup PRODUCT$, "", cmoNone
ShowProgmanGroup PRODUCT$, 1, cmoOverwrite
i% = FGetString ("256") '' Read Me
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, item$, "NOTEPAD " + MakePath(DEST$,"README.TXT"), "", cmoOverwrite
IF (MID$ (OPTIONS$, CONTROL, 1) = "1") THEN
IF (MID$ (OPTIONS$, IPX, 1) = "1" AND MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
i% = FGetString ("257") '' NetBIOS Control
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, PRODUCT$ + item$, MakePath(DEST$,"WCONTROL") + " " + MNAME$, "", cmoOverwrite
i% = FGetString ("258") '' IPX Control
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, PRODUCT$ + item$, MakePath(DEST$,"WIPCNTRL") + " " + MNAME$, "", cmoOverwrite
ELSE
i% = FGetString ("259") '' Control
item$ = GetSymbolValue ("RES_STR")
IF (MID$ (OPTIONS$, IPX, 1) = "1") THEN
CreateProgmanItem PRODUCT$, PRODUCT$ + item$, MakePath(DEST$,"WIPCNTRL") + " " + MNAME$, "", cmoOverwrite
END IF
IF (MID$ (OPTIONS$, NETBIOS, 1) = "1") THEN
CreateProgmanItem PRODUCT$, PRODUCT$ + item$, MakePath(DEST$,"WCONTROL") + " " + MNAME$, "", cmoOverwrite
END IF
END IF
END IF
IF (MID$ (OPTIONS$, SLAVE, 1) = "1") THEN
i% = FGetString ("260") '' Slave
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, PRODUCT$ + item$, MakePath(DEST$,"WSLAVE"), "", cmoOverwrite
i% = FGetString ("261") '' Receive DOS Show
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, item$, "command /c pause >nul", "", cmoOverwrite
i% = FGetString ("262") '' CalcPSW
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, item$, MakePath(DEST$,"CALCPSW"), "", cmoOverwrite
i% = FGetString ("263") '' Reinstall after Windows Setup
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, item$, MakePath(DEST$,"WINSTALL"), "", cmoOverwrite
END IF
i% = FGetString ("264") '' Uninstall
item$ = GetSymbolValue ("RES_STR")
CreateProgmanItem PRODUCT$, item$, MakePath(DEST$,"WINSTALL /U"), "", cmoOverwrite
CreateProgmanItem PRODUCT$, PRODUCT$ + " Help", "WINHELP " + MAKEPATH(DEST$,TLA$+".HLP"), "", cmoOverwrite
i% = FUpdateIniFiles (DEST$, OPTIONS$)
IF (i% = 0) THEN
sz$ = UIStartDlg(CUIDLL$, INIERROR, "FInfoDlgProc", 0, "")
UIPop 1
ERROR STFQUIT
END IF
END IF
IF (COPY% <> 0) THEN
CloseLogFile
RemoveFile MakePath(DEST$, "LOGFILE.OUT"), cmoNone
END IF
END SUB
'**
'** Purpose:
'** Appends a file name to the end of a directory path,
'** inserting a backslash character as needed.
'** Arguments:
'** szDir$ - full directory path (with optional ending "\")
'** szFile$ - filename to append to directory
'** Returns:
'** Resulting fully qualified path name.
'*************************************************************************
FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
IF szDir$ = "" THEN
MakePath = szFile$
ELSEIF szFile$ = "" THEN
MakePath = szDir$
ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
MakePath = szDir$ + szFile$
ELSE
MakePath = szDir$ + "\" + szFile$
END IF
END FUNCTION